﻿// Largest Submatrix of All 1’s POJ - 3494.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//https://vjudge.csgrandeur.cn/problem/POJ-3494
#define  _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
#include <stack>
#include <stdio.h>
#include <algorithm>


using namespace std;

/*
给定一个 m-by-n (0,1) 矩阵，在所有 1 的子矩阵中，哪个最大？
所谓最大，是指子矩阵中的元素最多。

输入
输入包含多个测试用例。每个测试用例都以 m 和 n（1 ≤ m，n ≤ 2000）开头。然后是一个 (0,1) 矩阵的元素，
按行-主顺序排列在 m 行上，每行有 n 个数字。一旦达到 EOF，输入结束。

输出
对于每个测试用例，输出一行包含所有 1 的最大子矩阵的元素数。如果给定矩阵的元素全为 0，则输出 0。

2 2
0 0
0 0
4 4
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
4 5
0 0 0 0 0
0 1 1 0 0
0 1 1 1 0
0 0 0 0 0
4 5
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0
4 5
0 1 1 1 0
0 1 1 1 0
0 1 0 1 0
0 0 0 0 0
4 5
0 1 0 1 0
0 1 1 1 0
0 1 0 1 0
0 0 0 0 0
4 5
0 1 1 1 0
0 1 0 1 0
0 1 0 1 0
0 0 0 0 0
4 5
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0
4 5
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
0 1 1 1 1
4 5
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
4 5
1 1 1 1 1
1 1 0 1 1
1 1 1 1 1
1 1 1 1 1
4 5
1 1 1 1 1
1 1 0 1 1
1 1 0 1 1
1 1 1 1 1

0
4
*/

const int N = 2010;
int matrix[N][N];
int ans;
int n, m;

void solveinner(int x) {
	stack<int> st;
	int lef[N]; memset(lef, 0, sizeof lef);
	int rig[N]; memset(rig, 0, sizeof rig);

	for (int y = 0; y < m; y++) {
		while (!st.empty() && matrix[x][y] <= matrix[x][st.top()]) st.pop();
		if (st.empty()) lef[y] = -1;
		else lef[y] = st.top();
		st.push(y);
	}

	while (!st.empty()) st.pop();

	for (int y = m - 1; y >= 0; y--) {
		while (!st.empty() && matrix[x][y] <= matrix[x][st.top()]) st.pop();
		if (st.empty()) rig[y] = m;
		else rig[y] = st.top();
		st.push(y);
	}

	for (int i = 0; i < m; i++) {
		ans = max(ans, matrix[x][i] * (rig[i] - lef[i] - 1));
	}

}

void solve() {
	ans = 0;
	for (int j = 0; j < m; j++) {
		for (int i = 1; i < n; i++) {
			if (matrix[i][j] == 1) {
				matrix[i][j] += matrix[i - 1][j];
			}
		}
	}

	for (int i = 0; i < n; i++) {
		solveinner(i);
	}

	printf("%d\n",ans);
}


int main()
{
	while (~scanf("%d%d",&n,&m)) {
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < m; j++) {
				scanf("%d",&matrix[i][j]);
			}
		}

		solve();
	}

	return 0;
}
